package abg.core.domain.db;

import abg.core.common.mybatis.config.FieldInsert;
import abg.core.common.mybatis.config.FieldSet;
import abg.core.common.mybatis.config.FieldUpdate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 会议室信息
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(value = "mt_room", onUpdate = FieldUpdate.class, onInsert = FieldInsert.class, onSet = FieldSet.class)
public class MtRoom extends ZBEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    //    会议室标题
    private String title;

    //    会议室描述
    private String content;

    //    房主ID
    private String userId;

    //    会议号
    private String mtCode;

    //    入会密码
    private String inPassword;

    //    允许主持人不在时进入会议；0=允许；1=不允许；
    private String isBeforeIn;

    //    主持人是否在会议中；0=在；1=不在
    private String compereStatus;

    //    入会类型；0=无限制；1=指定用户可以参会；
    private String inType;

    //    允许制定用户参会（逗号分隔字符串）
    private String passInUserIds;

    //    入会后自动静音；0=自动开麦；1=自动静音；
    private String isInMute;

    //    发消息状态；0=允许发言；1=全员禁言；默认为0；
    private String msgAuth;

    //    当前会议状态；0=已开启；1=已关闭；默认为0
    private String meetingStatus;

    //    会议实际开启时间
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime openTime;

    //    会议实际关闭时间
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime closeTime;

    //    定时强制关闭时间
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime closeSettingTime;



    //    会议内最大人数
    private Integer userMaxCount;

    //   	当前人数
    private String nowUserCount;

    //  	当前赞数
    private String nowZanCount;

    //   	当前热度
    private String nowHotCount;

    //   	最大连麦人数 默认为2
    private String maxTopCount;

    //参数：推流连接
    @Column(ignore = true)
    private String pushUrl;

    //参数：当前房间人数
    @Column(ignore = true)
    private String userCount;

    //参数：热度
    @Column(ignore = true)
    private String hot;

    //参数：主持人名称
    @Column(ignore = true)
    private String compereName;

}
